9. K8S之deployment
首先要来复习一下RC
,RS
这俩角色:
RC(Replication Controller)
:
K8s集群中最早的保证Pod高可用的API对象。用来确保容器应用的副本数始终保持在用户定义的副本数,即如果有容器退出,会自动创建新的pod
来代替;而如果异常多出来的容器,也会自动回收。
RS(ReplicaSet)
:
是新一代RC,提供同样的高可用能力,区别主要在于RS后来居上,能支持更多种类的匹配模式。(比如,根据pod的tags来批量管理)
也就是说,他俩管理Pod是这么来的:
RS
和RC
目前的区别只是支持的selector不同,后续肯定会加入更多功能。
deployment
滚动升级和回滚
应用扩容和缩容
暂停和继续
这三点是RC
和RS
没有的。
1. 部署流程
其实deployment
就是通过创建RS来管理Pod的,如图:
- 用户通过
kubectl
创建Deployment
。 Deployment
创建ReplicaSet
。ReplicaSet
创建Pod
。RS
对象的命名方式是:子对象的名字 = 父对象名字 + 随机字符串或数字
2. 滚动更新和回滚
如图,版本1的Pod,向版本2的Pod更新:
流程如下:
deployment
创建一个新的RS
:RS2
- 由
RS2
开始创建Pod2
,在旧版的K8S中,默认每次更新出1个Pod,删除1个旧的Pod;在新版的K8S中,默认每次创建出25%的Pod,再删除25%旧的就Pod。